﻿/*----------------------------------------------------------------
// Copyright (C) 2012 Q.FunnyFace
// 版权所有。 
//
// 文件名：IManagerUser.cs
// 文件功能描述：用户信息业务逻辑接口
//
// 
// 创建标识：2012-10-26 zhangqiang
//
// 修改标识：
// 修改描述：
//
//
//----------------------------------------------------------------*/
using DomainModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common.Extensions.OrderBy;
using System.Linq.Expressions;

namespace IManager
{

    /// <summary>
    /// 用户信息业务逻辑接口
    /// </summary>
    public interface IManagerUser
    {


        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <returns>用户信息</returns>
        UserInfo GetUser(int userID);


        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="loginName">用户登录名</param>
        /// <returns>用户信息</returns>
        UserInfo GetUser(string loginName);


        /// <summary>
        /// 添加用户信息
        /// </summary>
        /// <param name="userInfo">用户信息</param>
        /// <returns>True=操作成功/False=操作失败</returns>
        bool AddUser(UserInfo userInfo);


        /// <summary>
        /// 修改用户信息
        /// </summary>
        /// <param name="userInfo">用户信息</param>
        /// <returns>True=操作成功/False=操作失败</returns>
        bool UpdateUser(UserInfo userInfo);



        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="userID">用户Id</param>
        /// <param name="password">新密码</param>
        /// <returns>True=操作成功/False=操作失败</returns>
        bool ChangePassword(int userID,string password);


        /// <summary>
        /// 删除用户
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <returns>True=操作成功/False=操作失败</returns>
        bool DeleteUser(int userID);


        /// <summary>
        /// 是否允许登录
        /// </summary>
        /// <param name="loginName">用户名</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        UserInfo LoginUser(string loginName, string password);


        /// <summary>
        /// 根据条件分页获得记录
        /// </summary>
        /// <param name="where">条件</param>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="pageSize">每页大小</param>
        /// <param name="orderByExpressions">排序字段</param>
        /// <returns>记录列表</returns>
        IList<UserInfo> LoadAll(Expression<Func<UserInfo, bool>> where,
                                                   int pageIndex,
                                                   int pageSize,
                                                   params IOrderByExpression<UserInfo>[] orderByExpressions);


        /// <summary>
        /// 获取总数
        /// </summary>
        /// <param name="where">条件</param>
        /// <returns>记录总数</returns>
        int LoadCount(Expression<Func<UserInfo, bool>> where);



        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="userIds">用户ID</param>
        /// <param name="state">状态 0 未 1 通过</param>
        /// <returns></returns>
        bool CheckUsers(IList<int> userIds,int state);

    }
}
